/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package CRUD;

import Beans.BeanAcesso;
import Conexao.ConexaoBanco;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Marcos
 */
public class CRUDAcesso {
    
    public Connection conexao;

    public CRUDAcesso() throws SQLException {
        this.conexao = ConexaoBanco.getConexao();
    }
    
     public void adiciona(BeanAcesso BA) throws SQLException {
        String sql = "insert into acesso(cod_usuario, cod_tela)" + "values(?,?)";
        PreparedStatement stmt = conexao.prepareStatement(sql);        
        stmt.setInt(1, BA.getCod_usuario());
        stmt.setInt(2, BA.getCod_tela());              
        stmt.execute();
        stmt.close();
    }
    
    public List<BeanAcesso> getListaAcesso() throws SQLException {
        String sql = "select acesso.cod_usuario, login.usuario, acesso.cod_tela, telas.den_tela "
                + "from acesso left outer join login "
                + "on (acesso.cod_usuario = login.cod_usuario) "
                + "left outer join telas "
                + "on (telas.cod_tela = acesso.cod_tela)";
                //+ "where acesso.cod_usuario = ?";       

        PreparedStatement stmt = this.conexao.prepareStatement(sql);
        //stmt.setInt(1, cod_usuario);
        //stmt.setString(2, nome);
        ResultSet rs = stmt.executeQuery();
        List<BeanAcesso> ListaAcesso = new ArrayList<BeanAcesso>();
        while (rs.next()) {
            BeanAcesso BA = new BeanAcesso();
            BA.setCod_usuario(rs.getInt("cod_usuario"));
            BA.setUsuario(rs.getString("usuario"));
            BA.setCod_tela(rs.getInt("cod_tela"));
            BA.setDen_tela(rs.getString("den_tela"));
            ListaAcesso.add(BA);
        }
        rs.close();
        stmt.close();
        return ListaAcesso;
    }
    
    public List<BeanAcesso> getListaAcessoNom(String tela) throws SQLException {
        String sql = "select acesso.cod_usuario, login.usuario, acesso.cod_tela, telas.den_tela "
                + "from acesso left outer join login "
                + "on (acesso.cod_usuario = login.cod_usuario) "
                + "left outer join telas "
                + "on (telas.cod_tela = acesso.cod_tela)"
                + "where telas.den_tela = ?";       

        PreparedStatement stmt = this.conexao.prepareStatement(sql);
        stmt.setString(1, tela);
        ResultSet rs = stmt.executeQuery();
        List<BeanAcesso> ListaAcesso = new ArrayList<BeanAcesso>();
        while (rs.next()) {
            BeanAcesso BA = new BeanAcesso();
            BA.setCod_usuario(rs.getInt("cod_usuario"));
            BA.setUsuario(rs.getString("usuario"));
            BA.setCod_tela(rs.getInt("cod_tela"));
            BA.setDen_tela(rs.getString("den_tela"));
            ListaAcesso.add(BA);
        }
        rs.close();
        stmt.close();
        return ListaAcesso;
    }
    
    public List<BeanAcesso> getListaAcessoUsuario(String tela) throws SQLException {
        String sql = "select acesso.cod_usuario, login.usuario, acesso.cod_tela, telas.den_tela "
                + "from acesso left outer join login "
                + "on (acesso.cod_usuario = login.cod_usuario) "
                + "left outer join telas "
                + "on (telas.cod_tela = acesso.cod_tela)"
                + "where login.usuario = ?";       

        PreparedStatement stmt = this.conexao.prepareStatement(sql);
        stmt.setString(1, tela);
        ResultSet rs = stmt.executeQuery();
        List<BeanAcesso> ListaAcesso = new ArrayList<BeanAcesso>();
        while (rs.next()) {
            BeanAcesso BA = new BeanAcesso();
            BA.setCod_usuario(rs.getInt("cod_usuario"));
            BA.setUsuario(rs.getString("usuario"));
            BA.setCod_tela(rs.getInt("cod_tela"));
            BA.setDen_tela(rs.getString("den_tela"));
            ListaAcesso.add(BA);
        }
        rs.close();
        stmt.close();
        return ListaAcesso;
    }
}